(if (>= (javaVersion T) (1 7) )
  (de javaDefStaticConstructors (ClassObject SimpleClass)
    (for Constructor (thread ClassObject
                       (java "getConstructors")
                       arrayAsList
                       (map+ mapcar
                         '((Constructor)
                           (java (lookup)
                             "unreflectConstructor" Constructor) ) ) )
      (let (ConstructorName (staticMember SimpleClass "new")
            @Constructors (methodHandlesSymbol ConstructorName Constructor) )
        (when @Constructors
          (def ConstructorName
            (curry (@Constructors) @
              (use @Constructors
                (pass invokeMethodHandles
                  @Constructors) ) ) ) ) ) ) )
  (de javaDefStaticConstructors (ClassObject SimpleClass)
    (def (staticMember SimpleClass "new")
      (curry (@Class) @
        (pass 'java @Class T) ) ) ) )